package main

import "fmt"

// 常量
// 常量定义后不可修改
const pi = 3.14159265358979323846264338327950288419716939937510582097494459
const e = 2.71828182845904523536028747135266249775724709369995957496696763

// 批量声明 常量
const (
	OK           = 200
	NOT_FOUND    = 404
	SERVER_ERROR = 500
)

// 批量声明常量时, 如果声明后没有赋值 默认与上一行相同
const (
	a = 100
	b
	c
)

// iota 常量计数器 只能用于常量的表达式
// 从 0 开始计数 每行递增
// 可使用 匿名变量 跳过 某个值
const (
	i = iota // 0
	_        // 1
	j        // 2
	k = 100  // 插队
	l = iota // 4
	// 同一行声明的 iota 值相同
	m, n = iota, iota // 5
)

const (
	B  int64 = 1 << (iota * 10) // 1 << 0
	KB                          // 1 << 10
	MB                          // 1 << 20
	GB                          // 1 << 30
	TB                          // 1 << 40
	PB                          // 1 << 50
)

func main() {
	fmt.Printf("a: %v, b: %v, c: %v\n", a, b, c)

	fmt.Printf("i: %v, j: %v, k: %v,l: %v\n", i, j, k, l)

	fmt.Printf("m: %v, n: %v\n", m, n)

	fmt.Printf("B => %v, KB => %v, MB => %v, GB => %v, TB => %v, PB => %v\n", B, KB, MB, GB, TB, PB)
}
